#pragma once

#include "stdafx.h"
#include "vec3.h"

class Camera
{
public:
	enum CAM_TYPE { LAND_CAM, AIR_CAM };

public:
	CAM_TYPE CameraType;
	vec3 Position;
	vec3 Along;
	vec3 Up;
	vec3 Direction;

	Camera(void);
	Camera(CAM_TYPE ct);
	~Camera(void);

	void SetCameraType(CAM_TYPE ct);
	void Reset(void);
	void Update();
	vec3 GetPosition();
	// Get the direction of the camera
	vec3 GetDirection(void);
	void SetPosition( GLfloat x, GLfloat y, GLfloat z );
	void SetDirection( GLfloat x, GLfloat y, GLfloat z );

	void Pitch(GLfloat theta);
	void Yaw(GLfloat theta);
	void Roll(GLfloat theta);
	void Walk(GLfloat delta);//, bool Wall[4]);
	void Strafe(GLfloat delta);//, bool Wall[4]);
	void Fly(GLfloat delta);
	// Toggle HUD mode
	void SetHUD(bool m_bHUDmode);
	// Maximum movement speed
	float MAXSPEED_MOVE;
};
